The present invention relates to a program development support system and program development support software, and especially to those which can be preferably utilized for a graph GUI programming environment for development of a program caused to run by a processing unit on a target device from a user application described in a graph form.
OpenVX is API (Application Programming Interface) designed for image recognition, and established by “The Khronos Group” (hereinafter referred to as “Khronos”), in which a graph manager interprets a user application described in a graph form and uses a processing unit on a target device to efficiently perform a process.
FIG. 1 shows, by example, a user application described in a graph form for OpenVX, and FIG. 2 shows examples of OpenVX codes corresponding thereto. In OpenVX codes, a group of functions each stated in the form of vx**Node( ) is used to define a graph structure. Then, the graph structure is analyzed by the function vxVerifyGraph( ), and the parallelism of processes represented in a graph and the order of the processes are determined. The processes are executed by the function vxProcessGraph( ). In this example, as shown in FIG. 1, an input image in is subjected to a binarization process at vxThreshold node, and subtraction and addition are performed at vxSubtract and vxAdd nodes respectively, the results of which are finally added up to produce an output image out. In the example, vxThreshold must be executed first, whereas of vxSubtract and the first vxAdd, either may be performed prior to the other, or they may be processed in parallel. Incidentally, the graph herein described refers to a directed acyclic graph.
In regard to a node (Base Node) used in the graph, specifications of a required accuracy, behavior, etc. are defined by Khronos strictly to keep the compatibility. For instance, vxPhase node for calculating an edge direction for each pixel is defined so as to output with an accuracy of 8 bits of 0-255.
In addition to OpenVX, other program development environments arranged so that a directed acyclic graph is used as input means are proposed.
The Japanese Unexamined Patent Application Publication No. JP-A-2004-265393 discloses a control program construction system to construct a desired control program while using a graph on a display serving as a GUI (Graphical User Interface); the graph is arranged by connecting between nodes representing operation faculties through connection lines. Adopting directed acyclic graphs as common means for modeling in various systems, the system integration can be made easier.
JP-A-2011-096107 discloses a technique for speeding up the execution of a program by parallel processing in a simulation system caused to run on a multiprocessor system.
Target devices which OpenVX supports include a system LSI (Large Scale Integrated circuit) such as SoC (System-on-a-Chip). System LSIs such as SoCs, which are used as such a target device, include one having an image-processing processor enhanced in operation faculty peculiar to image processing or an accelerator which enables the speedup of a particular operation in addition to CPU (Central Processing Unit). For instance, R-Car V2H of Renesas Electronics Corporation has 2D and 3D graphics engines in addition to CPU, and it further includes an accelerator termed “Image Recognition Engine”.